package com.test.wrapper;

/**
 * Wrapper类用于封装一个对象实例，提供对其封装对象的访问
 * 它允许外部获取封装的实例及其类信息，但不允许修改
 */
public class BeanWrapper {
    // 保存被封装的实例对象
    private final Object wrappedInstance;
    // 保存被封装对象的类信息
    private Class<?> wrappedClass;

    /**
     * 构造方法，用于创建Wrapper对象并封装给定的实例对象
     *
     * @param wrappedInstance 要被封装的实例对象
     */
    public BeanWrapper(Object wrappedInstance) {
        this.wrappedInstance = wrappedInstance;
        this.wrappedClass = wrappedInstance.getClass();
    }

    /**
     * 获取封装的实例对象
     *
     * @return 返回封装的实例对象
     */
    public Object getWrappedInstance() {
        return this.wrappedInstance;
    }

    /**
     * 获取封装对象的类信息
     *
     * @return 返回封装对象的Class对象
     */
    public Class<?> getWrappedClass() {
        return this.wrappedClass;
    }
}
